package com.ostrich.a2104gao5.test16

/**
 * @Author : yaotianxue
 * @Time : On 2023/10/16 16:06
 * @Description : Test16
 *
 * 枚举和密封类的区别？
 *他们的区别是，枚举只能有一个实例，而密封类的子类可以有多个实例，
 * 并且密封类的子类可以携带自己独有的状态参数以及行为方法来记录更多的实现信息以完成更多的功能，这是枚举类所不具备的。
 */
fun main(){
    check(State.Error("没有网络"))
    check(State.Init)
    val list = mutableListOf<String>("a","b","b")
    check(State.Success(list))
}

fun check(state:State){
    when(state){
        is State.Init ->{
            println("初始化状态")
        }
        is State.Error ->{
            println("失败 ${state.message}")
        }
        is State.Success ->{
            println("成功 ${state.list}")
        }
        //不需要写else
    }
}